/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package database;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.Pessoa;

/**
 *
 * @author Guilherme
 */
public class PessoaDB
{
    public static Integer getLastID()
    {
        Integer lastID = null;
        String query = "SELECT MAX(id) FROM genesis.pessoa";
        ResultSet rs = Link.executeQuery(query);
        try
        {
            while (rs.next())
            {
                lastID = rs.getInt("MAX(id)");
            }
        } catch (SQLException ex)
        {
            return null;
        }
        return lastID;
    }
    
    public static boolean insert(Pessoa p)
    {
        Integer id = p.getId();
        String s = id  + ", '" + p.getNome() + "', '" + 
                p.getEndereco() + "', '" + p.getEmail() + "'";
        return Link.insert("pessoa", s) && insertFones(id, p.getTelefones());
    }
    
    public static boolean insertFones(Integer id, ArrayList<String> fones)
    {
        if (fones.isEmpty())
        {
            return true;
        }
        String s = "INSERT INTO genesis.telefone (idPessoa, telefone) VALUES ";
        for (int i = 0; i < fones.size(); i++)
        {
            s += " (" + id + ", '" + fones.get(i) + "')";
            if (i != fones.size() - 1)
            {
                s += ",\n";
            }
            
            Link.insert(s, s);
        }
        return Link.executeTransaction(s);
    }
    
    public static ArrayList<String> getTelefones(Integer id)
    {
        ArrayList<String> tels = new ArrayList<String>();
        String query = "SELECT telefone FROM genesis.telefone t WHERE t.idPessoa = " + id;
        ResultSet rs = Link.executeQuery(query);
        try
        {
            while (rs.next())
            {
                tels.add(rs.getString("telefone"));
            }
        } catch (SQLException ex)
        {
            return null;
        }
        return tels;
    }
    
//    public static ArrayList<Pessoa> search(String searchKey)
//    {
//        String query = "p.nome LIKE '%" + searchKey + "%' ";
//        ResultSet rs = Link.select("pessoa p", "*", query);
//        ArrayList<Pessoa> ps = new ArrayList<>();
//        try
//        {
//            while (rs.next())
//            {
//                Integer id = rs.getInt("id");
//                String nome = rs.getString("nome");
//                String end = rs.getString("endereco");
//                String email = rs.getString("email");
//                
//                Pessoa p = new Pessoa(id, nome, end, email);
//                ps.add(p);
//            }
//        } catch (SQLException ex)
//        {
//            return null;
//        }
//        return ps;
//    }
}
